package controller

import (
	bc "accurchain.com/parts-management/application/blockchain"
	"bytes"
	"encoding/json"
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
	"time"
)

type Company struct {
	Name           string    `json:"name"`            //企业名
	Phone          string    `json:"phone"`           //联系电话
	Account        string    `json:"account"`         //登录账号
	Password       string    `json:"password"`        //登录密码
	Address        string    `json:"address"`         //地址
	CompanyType    string    `json:"company_type"`    //企业类型，供应商，采购商，金融机构
	EnterpriseCode string    `json:"enterprise_code"` //企业统一社会信用代码
	BankCard       string    `json:"bank_card"`       //银行卡号码
	Balance        uint64    `json:"balance"`         //余额
	CreateDate     time.Time `json:"create_date"`     //创建时间
}

/**
  @Author:     dd
  @Date:       2020/5/13 17:23
  @Desc:       注册公司
  @HttpParam:
  @HttpReturn:
**/
func CreateCompany(ctx *gin.Context) {
	// 解析请求体

	//17位数字+1位大写字母
	//19位纯数字，必须以622作为起始数
	//电话号码


	// http返回
	company:= ctx.Param("company")
	var byte1 []byte
	if err := json.Unmarshal([]byte(company),&byte1);err != nil {
		fmt.Print(err.Error())
		ctx.AbortWithError(500,err)
	}
	resp,err := bc.ChannelQuery("getCompany","getCompany",[][]byte{
		byte1,
	})
	if err != nil {
		fmt.Print(err.Error())
		ctx.AbortWithError(500,err)
	}

	ctx.String(http.StatusOK,bytes.NewBuffer(resp.Payload).String())
}

/**
  @Author:     dd
  @Date:       2020/5/13 17:11
  @Desc:       输入企业类型来获取企业信息
  @HttpParam:  要求能获取/get/:companyType 中companyType的值
  @HttpReturn: 根据companyType来返回正确的结果，如果传入错误的companyType返回404响应码，正确则返回200
**/
func GetCompany(ctx *gin.Context) {


	// 将结果返回
	companyType := ctx.Param("companyType")
	if companyType != "buyer" || companyType != "supplier" || companyType != "financial_org"{
		ctx.String(500,"invlid companytype")
	}
	resp,err := bc.ChannelQuery("getCompany","getCompany",[][]byte{
		[]byte(companyType),
	})
	if err != nil {
		fmt.Print(err.Error())
		ctx.AbortWithError(404,err)
	}

	ctx.String(http.StatusOK,bytes.NewBuffer(resp.Payload).String())
}
